package com.qkjia.zqkspringshell.demo;

import org.springframework.shell.standard.ShellComponent;
//SpringShell 运行脚本有两种方式, 一种是在交互式终端中使用script内置命令, 另外一种是在启动应用时直接将脚本作为参数传递.
@ShellComponent
public class ZqkHouTaiJIaoBen {
//    1. 创建命令脚本
//    命令脚本也就是一组命令的集合, 将一组命令写入文件. 命令以换行符结束. 笔者创建脚本为: /tmp/zongf/script
  /*  add 2 3
    div 4 2

            # 命令过多长时, 可使用 \ 进行换行
    div  \
            8 \
            2*/

//    2. 运行脚本
//2.1 交互式执行运行脚本
//    交互式方式首先需要启动应用, 进入交互式终端, 然后借助内置命令script, 将脚本文件的绝对路径作为参数,
//    直接运行. 需要注意的是 script 命令一次只能运行一个脚本

//    shell:>script /tmp/zongf/script


//        2.2 后台运行方式执行脚本
//    后台运行方式无须进入交互式终端, 使用java命令启动应用时, 直接将脚本作为应用启动参数运行即可. 需要注意:
//    脚本名称需要使用绝对路径, 且需要以@开头
//            可同时传递多个脚本参数
//    应用启动后, 执行完脚本之后, 直接退出应用, 不会停留在交互程序.

    /**
     * $ java -jar spring-shell-0.0.1-SNAPSHOT.jar @/tmp/zongf/script @/tmp/zongf/script
     *
     * Welcom to :
     *     __  _____  _______ __  __________    __
     *    /  |/  /\ \/ / ___// / / / ____/ /   / /
     *   / /|_/ /  \  /\__ \/ /_/ / __/ / /   / /
     *  / /  / /   / /___/ / __  / /___/ /___/ /___
     * /_/  /_/   /_//____/_/ /_/_____/_____/_____/
     *
     * Version: 0.0.1-SNAPSHOT
     * Author: zongf
     * Date: 2019-01-26
     *
     * # 执行了两遍...
     * 5
     * 2
     * 4
     * 5
     * 2
     * 4
     */
}
